package com.sunducation.wts.databinding

import androidx.databinding.BindingConversion
import java.text.SimpleDateFormat
import java.util.*

//看TextView的text属性，我们需要一个String类型的值，但是这里确给了一个Date类型的，这就需要我们去定义Converter去转换它，
@BindingConversion
fun convertDate(date: Date) : String {
    var sdf: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd")
    return sdf.format(date)
}



/*注解
@Bindable
用于数据更新自动刷新视图. 后面提.

@BindingAdapter
用于标记方法. 前面提到了DataBinding自定义属性自动识别setter.

@BindingMethods
DataBinding默认可以在布局中使用setter方法作为自定义属性, 但是如果不是setter格式的方法就要使用BindingMethod注解了.
通过创建一个自定义属性来关联一个类中已有的方法.

@BindingConversion
属性值自动进行类型转换

@InverseMethod
在android studio3.0提供inverse系列的新注解, 全部都是针对数据双向绑定.

在数据和视图的数据不统一时可以使用该注解@InverseMethod解决数据转换的问题

例如数据模型存储用户的id但是视图不显示id而是显示用户名(数据和视图的类型不一致), 我们就需要在两者之间转换.




总结
@BindingBuildInfo和@Untaggable这两个注解是DataBinding自动生成Java类时使用的.

Bindable

设置数据刷新视图. 自动生成BR的ID

BindingAdapter

设置自定义属性. 可以覆盖系统原有属性

BindingMethod/BindingMethods

关联自定义属性到控件原有的setter方法

BindingConversion

如果属性不能匹配类型参数将自动根据类型参数匹配到该注解修饰的方法来转换

InverseMethod

负责实现视图和数据之间的转换

InverseBindingAdapter

视图通知数据刷新的

InverseBindingMethod/InverseBindingMethods

视图通知数据刷新的(如果存在已有getter方法可用的情况下)*/


